package 二分查找;

/**
 * 74. 搜索二维矩阵
 * 给你一个满足下述两条属性的 m x n 整数矩阵：
 * 每行中的整数从左到右按非严格递增顺序排列。
 * 每行的第一个整数大于前一行的最后一个整数。
 *
 * 思路：对二维矩阵进行二分查找，可以对每一列进行二分查找
 */
public class L_74 {
    public boolean searchMatrix(int[][] matrix, int target) {
        for (int i = 0; i < matrix.length; i++) {
            if (bianrySearch(matrix[i],target)){
                return true;
            }
        }
        return false;
    }

    private boolean bianrySearch(int[] row,int target){
        int left = 0, right = row.length - 1;
        while (left <= right){
            int mid = left + (right - left) / 2;
            if (row[mid] == target){
                return true;
            }else if(row[mid] > target){
                right = mid - 1;
            }else {
                left = mid + 1;
            }
        }
        return false;
    }
}
